Skip to content

feat(multi-runner): add experimental config translation - #5284

Open
edersonbrilhante wants to merge 24 commits into
mainfrom
experimental-multi-runner-input-translation
Open

feat(multi-runner): add experimental config translation#5284
edersonbrilhante wants to merge 24 commits into
mainfrom
experimental-multi-runner-input-translation

Conversation

@edersonbrilhante

@edersonbrilhante edersonbrilhante commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Description

  • Introduce one multi_runner_config input that accepts either the stable v1 runner_config shape or the experimental v2 provider-boundary shape.
  • Translate v1 lanes into the canonical v2 model and resolve global, provider, and per-lane settings without losing plan-known map keys.
  • Add typed global configuration inputs and documentation for GitHub, Lambda, orchestration, SSM, observability, and compute-provider settings.
  • Route resource-ready configuration through effective/resolved locals while preserving v1 compatibility and adding v1/v2 translation, resolution, and effective-config tests.

Test Plan

  • terraform fmt -recursive
  • terraform validate in modules/multi-runner
  • terraform test in modules/multi-runner — 9 passed, 0 failed
  • Pre-commit formatting, validation/TFLint, and merge-conflict checks

Related Issues

@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@edersonbrilhante
edersonbrilhante force-pushed the experimental-multi-runner-input-translation branch 2 times, most recently from 1ee6ddc to f65f8c8 Compare September 3, 2026 13:22
@edersonbrilhante
edersonbrilhante force-pushed the experimental-multi-runner-input-translation branch from e2ed58c to 0d7eb1d Compare September 3, 2026 14:44
@edersonbrilhante
edersonbrilhante marked this pull request as ready for review September 3, 2026 18:32
@edersonbrilhante
edersonbrilhante requested review from a team as code owners September 3, 2026 18:32
@edersonbrilhante
edersonbrilhante force-pushed the experimental-multi-runner-input-translation branch from 82dace3 to 2403197 Compare September 4, 2026 17:59

@Brend-Smits Brend-Smits left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really like the direction here, and the ADR is excellent. One design worry: baking experimental_ into every variable name means anyone who helps test this, or adopts it once a migration path exists, has to rename their whole config again at graduation. That penalizes exactly the early adopters we want.

Could we instead treat instability as a lifecycle property, not a naming one?

  • Give the config its intended permanent names now (global_config, global_config_observability, multi_runner_config, …).
  • Gate opt-in behind a single acknowledgement flag, e.g. experimental_features = ["multi-runner-v2"], with a validation that errors if the v2 config is set without the ack.
  • Communicate "this may break" via the docs banner, description warnings, and semver on the schema during the experimental window.

Then graduation is just dropping the flag (kept as a deprecated no-op for one release), the user's actual config blocks never change. It also fits the ADR's goal of a stable provider boundary: the boundary shouldn't be spelled experimental_ in every consumer's HCL.

Fair trade-off: the prefix does make instability impossible to miss and keeps v1/v2 unambiguous in locals/state, the gate approach reproduces that via validation instead of naming. I think that's worth it to avoid the double migration.

What do you think?

@edersonbrilhante
edersonbrilhante force-pushed the experimental-multi-runner-input-translation branch from 2403197 to 93d7efb Compare September 7, 2026 15:00
@edersonbrilhante

Copy link
Copy Markdown
Contributor Author

@Brend-Smits Done. Can you re-review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants